//
//  CZNetworkTool.swift
//  01-sinaWeibo-05-09
//
//  Created by mac on 16/5/14.
//  Copyright © 2016年 mac. All rights reserved.
//

import UIKit
import AFNetworking

enum RequestMethod: String
{
    case GET = "GET"
    case POST = "POST"
}

class CZNetworkTool: NSObject {
    //单例
    static let sharedInstance:CZNetworkTool = CZNetworkTool()
    
    //属性
    private let afnManager: AFHTTPSessionManager =
    {
        let afn = AFHTTPSessionManager(baseURL: NSURL(string: "https://api.weibo.com/"))
        // 给响应的序列化器多添加支持的类型
        afn.responseSerializer.acceptableContentTypes?.insert("text/plain")
        return afn
        
    }()
    // 给响应的序列化器多添加支持的类型
    
    // 如果直接使用AFN的GET和POST方法,如果AFN改变了方法名或参数改变了,哪项目中直接使用AFN.GET和POST的地方都需要改变
    // 自己封装GET 和 POST方法,项目中要使用GET和POST就用我们封装好的,到时如果如果AFN改变了方法名或参数改变了,只需要改我们封装的方法
    /// 封装AFN的GET和POST,通过参数来确定使用GET还是POST
    func request (method:RequestMethod,URLSTring:String,parameters:AnyObject,progress: ((NSProgress) -> Void)?, success: ((NSURLSessionDataTask, AnyObject?) -> Void)?, failure: ((NSURLSessionDataTask?, NSError) -> Void)?)
    {
        
        if method == RequestMethod.GET{
            afnManager.GET(URLSTring, parameters: parameters, progress: progress, success: success, failure: failure)
            //在完成请求获得数据的时候会回调success(task: NSURLSessionDataTask,response: AnyObject?)
        }else
        {
            afnManager.POST(URLSTring, parameters: parameters, progress: progress, success: success, failure: failure)
        }
    }

}
